package com.lisn.KotlinHtml5

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.webkit.WebViewClient
import com.lisn.sghttps.R
import kotlinx.android.synthetic.main.activity_main_h5.*
import org.json.JSONObject

class MainH5Activity : AppCompatActivity() {

    // 懒加载，使用了才初始化
    val mWebView: WebView by lazy {
        webView
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main_h5)

        setWebView()

    }

    var setWebView = {
        // 1.开启Kotlin与H5通信开关
        mWebView.settings.javaScriptEnabled = true
        // 2.设置两个WebViewClient
        mWebView.webViewClient = MyWebViewClient()
        mWebView.webChromeClient = MyWebChromeClient()
        //Kotlin与H5通信方式1：H5调用Kotlin方法
        // mWebView.addJavascriptInterface(对象，字符串) 对象：方法名； 字符串：就是参数1对象的别名
        mWebView.addJavascriptInterface(JavaScriptMethods(this, mWebView), "jsInterface")
        // 3.加载网页
        // mWebView.loadUrl("http://127.0.0.1:8080/androidweb/index.html")

        // 本地模板：网页保存到本地 提高加载速度
        mWebView.loadUrl("file:///android_asset/index.html")
    }

    //lambda表达式


    inner private class MyWebViewClient : WebViewClient() {
        // 页面加载完成调用
        override fun onPageFinished(view: WebView?, url: String?) {
            super.onPageFinished(view, url)
            // 调用H5方法
            //    kotlin与H5通信方式2：Kotlin调用H5
            //     showMessage
            // mWebView.loadUrl("javascript:方法名(参数)")
            var json = JSONObject()
            json.put("name", "Kotlin")
            mWebView.loadUrl("javascript:showMessage(" + json.toString() + ")")
        }
    }

    private class MyWebChromeClient : WebChromeClient() {
        // 加载进度条
        override fun onProgressChanged(view: WebView?, newProgress: Int) {
            super.onProgressChanged(view, newProgress)

        }

    }
}


